
package com.arquitectonic.client.servicios;

import java.util.Collection;
import java.util.HashMap;

import com.arquitectonic.compartido.Accion;
import com.arquitectonic.compartido.Espacio;
import com.arquitectonic.compartido.Preferencia;
import com.arquitectonic.compartido.Seccion;
import com.arquitectonic.compartido.ServerException;
import com.arquitectonic.compartido.Stakeholder;
import com.arquitectonic.compartido.Sugerencia;
import com.google.gwt.user.client.rpc.RemoteService;
import com.google.gwt.user.client.rpc.RemoteServiceRelativePath;


/**
 * The client side stub for the RPC service.
 */
@RemoteServiceRelativePath("PlanerService")
public interface PlanerService extends RemoteService {
	
	//roles
	public String[] getRoles();
	
	//tiposVistas
	public String[] getTiposVistasPosibles();
	
	//vistas y preferencias por defecto:
	HashMap<String,Integer> getTiposVistas();
	public Boolean addVista(String id, int tipo);
	Collection<Preferencia> setPreferenciasPorDefecto(
			Collection<Stakeholder> stakeholders,
			HashMap<String, String> vistas); 	
	
	//llamadas desde gestor login
	Boolean logearUsuario(String url,String usuario,String password) throws ServerException;
	Collection<Espacio> getEspacios() throws ServerException;
	Boolean setPagina(String pagina,String espacio) throws ServerException;
	
	//Servicios invocados al iniciarse el cliente:
	Collection<Preferencia> getPreferencias() throws ServerException;
	Collection<Stakeholder> getStakeholders() throws ServerException;  
	Collection<Seccion> getSecciones() throws ServerException;  
	
	Boolean addStakeholder(Stakeholder stakeholder) throws ServerException;
	Boolean delStakeholder(String nombre) throws ServerException;
	Boolean addPreferencia(Preferencia preferencia) throws ServerException;
	Boolean delPreferencia(String nombreStakeholder,String nombreVista) throws ServerException;
	
	Boolean updateSeccion(Seccion seccion) throws ServerException;
	
	Collection<Accion> ejecutarPlaner(Collection<Seccion> secciones, int costoiteracion) throws ServerException;
	
	Collection<Sugerencia> seguimientoPagina() throws ServerException;

	

}
